package controller;

import java.util.ArrayList;
import java.util.List;

import model.Carta;
import beans.CartaBean;
import dao.HibernateCartaDAO;
import dto.CartaDTO;


public class AdministradorCarta {
	private static AdministradorCarta instancia;
	private AdministradorCarta(){
		
	}
	public static AdministradorCarta getInstancia(){
		if(instancia==null)
			instancia=new AdministradorCarta();
		return instancia;
	}
	
	public void grabarCarta(Carta carta) {
		CartaBean cartab=fromModelToBean(carta);
		HibernateCartaDAO.getInstancia().grabarCarta(cartab);
		
	}
	public CartaBean fromModelToBean(Carta carta) {
		CartaBean cartab=null;
		if(carta!=null){
			cartab=new CartaBean();
			cartab.setIdCarta(carta.getId());
			cartab.setNombre(carta.getNombre());
			cartab.setRubroBean(AdministradorRubro.getInstancia().fromModelTOBean(carta.getRubros()));
		}
		return cartab;
	}
	public Carta buscarCarta(Carta carta) {
		CartaBean cartab=fromModelToBean(carta);
		cartab=HibernateCartaDAO.getInstancia().buscarCarta(cartab);
		return fromBeanTOModel(cartab);
	}
	
	public Carta fromBeanTOModel(CartaBean cartab) {
		Carta carta=null;
		if(cartab!=null){
			carta=new Carta();
			carta.setId(cartab.getIdCarta());
			carta.setNombre(cartab.getNombre());
			carta.setRubros(AdministradorRubro.getInstancia().fromBeanTOModel(cartab.getRubroBean()));
		}
		return carta;
	}
	public void updateCarta(Carta carta) {
		CartaBean cartab=fromModelToBean(carta);
		HibernateCartaDAO.getInstancia().update(cartab);
		
	}
	public List<CartaBean> fromModelTOBean(List<Carta> cartas) {
		List<CartaBean> cartasB=new ArrayList<CartaBean>();
		for (Carta carta : cartas) {
			CartaBean cartab=fromModelToBean(carta);
			cartasB.add(cartab);
		}
		return cartasB;
	}
	public List<Carta> fromBeanTOModel(List<CartaBean> cartasb) {
		List<Carta> cartas=new ArrayList<Carta>();
		for (CartaBean cartab : cartasb) {
			Carta carta=fromBeanTOModel(cartab);
			cartas.add(carta);
		}
		return cartas;
	}
	public List<Carta> fromDTOTOModel(List<CartaDTO> cartasDTO) {
		List<Carta> cartas=new ArrayList<Carta>();
		for (CartaDTO cartaDTO : cartasDTO) {
			Carta carta=fromDTOTOModel(cartaDTO);
			cartas.add(carta);
		}
		return cartas;
	}
	public Carta fromDTOTOModel(CartaDTO cartaDTO) {
		Carta carta=null;
		if(cartaDTO!=null){
			carta=new Carta();
			carta.setId(cartaDTO.getId());
			carta.setNombre(cartaDTO.getNombre());
			carta.setRubros(AdministradorRubro.getInstancia().fromDTOTOModel(cartaDTO.getRubros()));
		}
		return carta;
	}
	
	public List<CartaDTO> fromModelTODTO(List<Carta> cartas) {
		List<CartaDTO> cartasDTO=new ArrayList<CartaDTO>();
		for (Carta carta : cartas) {
			CartaDTO cartaDTO=fromModelTODTO(carta);
			cartasDTO.add(cartaDTO);
		}
		return cartasDTO;
	}
	public CartaDTO fromModelTODTO(Carta carta) {
		CartaDTO cartaDTO=null;
		if(carta!=null){
			cartaDTO=new CartaDTO();
			cartaDTO.setId(carta.getId());
			cartaDTO.setNombre(carta.getNombre());
			cartaDTO.setRubros(AdministradorRubro.getInstancia().fromModelTODTO(carta.getRubros()));
		}
		return cartaDTO;
	}
	
}
